//package com.tgz.websocket;
//
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.messaging.Message;
//import org.springframework.messaging.MessageChannel;
//import org.springframework.messaging.simp.stomp.StompCommand;
//import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
//import org.springframework.messaging.support.ChannelInterceptor;
//import org.springframework.messaging.support.MessageHeaderAccessor;
//import org.springframework.stereotype.Component;
//
//import java.security.Principal;
//import java.util.List;
//
//@Component
//@Slf4j
//public class AuthChannelInterceptor implements ChannelInterceptor {
//    /**
//     * 连接前监听
//     *
//     * @param message
//     * @param channel
//     * @return
//     */
//    @Override
//    public Message<?> preSend(Message<?> message, MessageChannel channel) {
//        StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
//        //1、判断是否首次连接
//        if (accessor != null && StompCommand.CONNECT.equals(accessor.getCommand())) {
//            log.info(">>>首次连接<<<");
//            //2、判断token
//            //'websocketAccessToken': 'HWPO325J9814GBHJF933'
//            List<String> nativeHeader = accessor.getNativeHeader("websocketAccessToken");
//            if (nativeHeader != null && !nativeHeader.isEmpty()) {
//                String token = nativeHeader.get(0);
//                if (StringUtils.isNotBlank(token) && "HWPO325J9814GBHJF933".equals(token)) {
//                    //todo,通过token获取用户信息，下方用loginUser来代替
////                    if (loginUser != null) {
//                        //如果存在用户信息，将用户名赋值，后期发送时，可以指定用户名即可发送到对应用户
//                        Principal principal = new Principal() {
//                            @Override
//                            public String getName() {
////                                return loginUser.getUsername();
//                                return "HWPO325J9814GBHJF933解析用户：张三";
//                            }
//                        };
//                        accessor.setUser(principal);
//                        log.info(">>>首次连接，有token[成功]<<<");
//                        return message;
////                    }
//                }
//            }
//            //没有token
//            log.error(">>>首次连接，没有token[失败]<<<");
//            return null;
//        }
//        //不是首次连接，已经登陆成功
//        return message;
//    }
//}
